package com.rick.awarenessdemo.util

import android.content.Context
import com.amap.api.maps.MapsInitializer
import com.amap.api.services.core.PoiItem
import com.amap.api.services.poisearch.PoiResult
import com.amap.api.services.poisearch.PoiSearch
import com.blankj.utilcode.util.GsonUtils

/**
 * 地图工具
 */
object MapUtil {
    /**
     * 初始化
     */
    @JvmStatic
    fun init(context: Context) {
        // 同意隐私协议
        MapsInitializer.updatePrivacyShow(context, true, true)
        MapsInitializer.updatePrivacyAgree(context, true)
    }

    /**
     * 关键字检索POI
     */
    @JvmStatic
    fun poiSearch(
        context: Context,
        keyword: String,
        pageNum: Int,
        listener: PoiSearch.OnPoiSearchListener
    ) {
        LogUtil.log("poiSearch keyword=$keyword pageNum=$pageNum")
        //keyWord表示搜索字符串，
        //第二个参数表示POI搜索类型，二者选填其一，选用POI搜索类型时建议填写类型代码，码表可以参考下方（而非文字）
        //cityCode表示POI搜索区域，可以是城市编码也可以是城市名称，也可以传空字符串，空字符串代表全国在全国范围内进行搜索
        val query = PoiSearch.Query(keyword, null)
        query.pageSize = 10 // 设置每页最多返回多少条poiitem
        query.pageNum = pageNum //设置查询页码
        val poiSearch = PoiSearch(context, query)
        poiSearch.setOnPoiSearchListener(object : PoiSearch.OnPoiSearchListener {
            override fun onPoiSearched(p0: PoiResult?, p1: Int) {
                LogUtil.log("onPoiSearched ${GsonUtils.toJson(p0)} $p1")
                listener.onPoiSearched(p0, p1)
            }

            override fun onPoiItemSearched(p0: PoiItem?, p1: Int) {
                LogUtil.log("onPoiItemSearched $p0 $p1")
                listener.onPoiItemSearched(p0, p1)
            }
        })
        poiSearch.searchPOIAsyn()
    }

    /**
     * 高德经度转为华为经度
     */
    @JvmStatic
    fun gdLat2HwLat(lat: Double) = lat + 0.00268

    /**
     * 高德纬度转为华为纬度
     */
    @JvmStatic
    fun gdLon2HwLon(lan: Double) = lan - 0.00514
}